home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Compilers⁄Interps / kevoSource / lists.h < prev    next >
Text File  |  1993-05-11  |  2KB  |  58 lines

  1. /* Kevo -- a prototype-based object-oriented language */
  2. /* (c) Antero Taivalsaari 1991-1993                   */
  3. /* Some parts (c) Antero Taivalsaari 1986-1988           */
  4. /* lists.h: Dynamically growing lists (needed in various places) */
  5.  
  6. /*------------------------------------------------------------------------*/
  7. /* List management */
  8.  
  9. /*
  10.     LISTs are used in several places of Kevo as internal storage
  11.     structures. For instance, each CONTEXT contains multiple LISTs to 
  12.     refer to the members of a clone family and to the parent and child
  13.     families. Furthermore, the browser uses LISTs to contain the cell 
  14.     indexes when properties are cut, copied, and pasted from one object 
  15.     to another.
  16.     
  17.     LISTs are basically similar to OBJECTs defined in 'memory.h'. 
  18.     In other words, a LIST is composed of a handle (known as LIST) 
  19.     and a store part (known as STORE). This two-level structure 
  20.     allows us to easily resize lists.
  21.     
  22.     For simplicity, LISTs have been implemented as linear structures.
  23.     However, since cloning is a very frequent operation in the system,
  24.     and LISTs are used to keep track of clone families, we have implemented 
  25.     LISTs so that the logical and physical sizes of lists are maintained
  26.     separately. In other words, we do not have to resize the list structure
  27.     each time when a new item is added to it.
  28.  
  29.     To support easy browsing of clone families, each list object is actually
  30.     an OOP object. In other words, each list contains two extra items in the 
  31.     beginning of the list: the '(=context)' operation and a reference to a
  32.     context 'dummyContext'. 
  33. */
  34.  
  35. typedef struct listStruct     LIST; 
  36.  
  37. struct listStruct {
  38.     STORE*    mfa;        /* Pointer to the store part (memory field address) */
  39.     int    physicalSize;    /* Physical list size */
  40.     int logicalSize;    /* Logical list size */
  41. };
  42.  
  43.  
  44. LIST*         createList();
  45. void         deleteList();
  46.  
  47. void        addToList();
  48. void        condAddToList();
  49. int            removeFromList();
  50.  
  51. void        storeToList();
  52. void*        fetchFromList();
  53.  
  54. int            findInList();
  55.  
  56. void        emptyList();
  57. void        optimizeList();
  58.